home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 24 / CU Amiga Magazine's Super CD-ROM 24 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-07].iso / CUCD / Programming / EasyPLUGINs / source / textfield.e < prev    next >
Encoding:
Text File  |  1998-01-08  |  4.8 KB  |  185 lines

  1. /*
  2. **
  3. ** Name         : TextField PLUGIN
  4. **              : Part of the EasyPLUGINs package
  5. **
  6. ** Copyright    : Ralph Wermke of Digital Innovations
  7. ** EMail        : wermke@uni-greifswald.de
  8. ** WWW          : http://www.user.fh-stralsund.de/~rwermke/di.html
  9. **
  10. ** ProgID       : $08
  11. ** ProgrammerID : $00
  12. **
  13. ** Version      : 0.9
  14. ** Date         : 11-Dec-97
  15. **
  16. */
  17.  
  18. OPT PREPROCESS
  19. OPT MODULE
  20. OPT EXPORT
  21.  
  22. MODULE 'tools/easygui',
  23.        'graphics/text',
  24.        'utility/tagitem','utility',
  25.        'intuition/intuition','intuition/gadgetclass','intuition/classes',
  26.        'workbench/workbench',
  27.        'gadgets/textfield','textfield'
  28.  
  29.  
  30. OBJECT textfield_plugin OF plugin PRIVATE
  31.    gad      : PTR TO gadget
  32.    tfclass  : PTR TO iclass
  33.    text     : PTR TO CHAR
  34.    pos
  35.    win      : PTR TO window
  36.    disabled
  37. ENDOBJECT
  38.  
  39.  
  40. CONST TAG_BASE = $80080000
  41.  
  42. ->- Special Tags ------------------------------------------
  43.  
  44. ENUM PLA_TextField_Disabled=TAG_BASE,
  45.      PLA_TextField_Text,
  46.      PLA_TextField_TextLen
  47.  
  48. ->- Special Values ----------------------------------------
  49.  
  50.  
  51. ->- Constructor/ Destructor -------------------------------
  52.  
  53. PROC textfield(tags=NIL:PTR TO tagitem) OF textfield_plugin
  54.  
  55.    IF (textfieldbase:=OpenLibrary('gadgets/textfield.gadget',0))=NIL THEN Raise("TXTF")
  56.  
  57.    self.tfclass:=TeXTFIELD_GetClass()
  58.  
  59.    IF utilitybase:=OpenLibrary('utility.library', 37)
  60.  
  61.       self.text    :=GetTagData(PLA_TextField_Text, NIL, tags)
  62.       self.disabled:=GetTagData(PLA_TextField_Disabled, FALSE, tags)
  63.       self.pos     :=0
  64.       self.gad     :=0
  65.       self.win     :=0
  66.  
  67.       CloseLibrary(utilitybase)
  68.    ELSE
  69.       Raise("UTIL")
  70.    ENDIF
  71.  
  72. ENDPROC
  73.  
  74. PROC end() OF textfield_plugin
  75.    IF self.text THEN Dispose(self.text)
  76.    self.tfclass:=NIL
  77.    IF textfieldbase THEN CloseLibrary(textfieldbase)
  78. ENDPROC
  79.  
  80.  
  81. ->- Overridden Methods ------------------------------------
  82.  
  83. PROC will_resize() OF textfield_plugin IS (RESIZEX OR RESIZEY)
  84.  
  85. PROC min_size(ta:PTR TO textattr, fh) OF textfield_plugin IS (10*fh),(5*fh)
  86.  
  87. PROC render(ta:PTR TO textattr,x,y,xs,ys,win:PTR TO window) OF textfield_plugin
  88.  
  89.    self.gad:=NewObjectA(self.tfclass, NIL, [GA_LEFT, x,
  90.                                             GA_TOP, y,
  91.                                             GA_WIDTH, xs,
  92.                                             GA_HEIGHT, ys,
  93.                                             GA_ID, 1,
  94.                                             TEXTFIELD_BORDER, TEXTFIELD_BORDER_DOUBLEBEVEL,
  95.                                             TEXTFIELD_BLOCKCURSOR, TRUE,
  96.                                             TEXTFIELD_TABSPACES, 4,
  97.                                             TEXTFIELD_TEXT, self.text,
  98.                                             TEXTFIELD_CURSORPOS, self.pos,
  99.                                             GA_DISABLED, self.disabled,
  100.                                             TAG_DONE])
  101.    IF self.gad=NIL THEN Raise("GAD")
  102.    self.win:=win
  103.    AddGList(win,self.gad,-1,1,NIL)
  104.    RefreshGList(self.gad,win,NIL,1)
  105.  
  106. ENDPROC
  107.  
  108. PROC clear_render(win:PTR TO window) OF textfield_plugin
  109. DEF len, buffer, pos
  110.  
  111.    IF self.gad
  112.  
  113.       SetGadgetAttrsA(self.gad, win, NIL, [TEXTFIELD_READONLY, TRUE, TAG_DONE])
  114.  
  115.       GetAttr(TEXTFIELD_SIZE, self.gad, {len})
  116.       GetAttr(TEXTFIELD_TEXT, self.gad, {buffer})
  117.       GetAttr(TEXTFIELD_CURSORPOS, self.gad, {pos})
  118.       self.pos:=pos
  119.  
  120.       IF buffer
  121.          Dispose(self.text)
  122.          self.text:=New(len+1)
  123.          AstrCopy(self.text,buffer,len+1)
  124.       ENDIF
  125.  
  126.       SetGadgetAttrsA(self.gad, win, NIL, [TEXTFIELD_READONLY, FALSE, TAG_DONE])
  127.  
  128.       RemoveGList(win,self.gad,1)
  129.       DisposeObject(self.gad)
  130.    ENDIF
  131.  
  132. ENDPROC
  133.  
  134.  
  135. ->- New Methods -------------------------------------------
  136.  
  137. PROC set(attr, value) OF textfield_plugin
  138. DEF len
  139.  
  140.    SELECT attr
  141.  
  142.       CASE PLA_TextField_Disabled
  143.          IF self.gad
  144.             SetGadgetAttrsA(self.gad,self.gh.wnd,NIL,[GA_DISABLED,self.disabled,TAG_DONE])
  145.          ENDIF
  146.       CASE PLA_TextField_Text
  147.          IF value
  148.             IF self.gad
  149.                Dispose(self.text)
  150.                len:=StrLen(value)+1
  151.                self.text:=New(len)
  152.                AstrCopy(self.text,value,len)
  153.                SetGadgetAttrsA(self.gad,self.gh.wnd,NIL,[TEXTFIELD_TEXT,self.text,TAG_DONE])
  154.             ENDIF
  155.          ENDIF
  156.  
  157.    ENDSELECT
  158.  
  159. ENDPROC
  160.  
  161.  
  162. PROC get(attr) OF textfield_plugin
  163. DEF x
  164.  
  165.    SELECT attr
  166.  
  167.       CASE PLA_TextField_Disabled
  168.          RETURN self.disabled, TRUE
  169.       CASE PLA_TextField_Text
  170.          IF self.win AND self.gad
  171.             SetGadgetAttrsA(self.gad, self.win, NIL, [TEXTFIELD_READONLY, TRUE, TAG_DONE])
  172.             GetAttr(TEXTFIELD_TEXT, self.gad, {x})
  173.             SetGadgetAttrsA(self.gad, self.win, NIL, [TEXTFIELD_READONLY, FALSE, TAG_DONE])
  174.             RETURN x, TRUE
  175.          ENDIF
  176.       CASE PLA_TextField_TextLen
  177.          IF self.gad
  178.             GetAttr(TEXTFIELD_SIZE, self.gad, {x})
  179.             RETURN x, TRUE
  180.          ENDIF
  181.    ENDSELECT
  182.  
  183. ENDPROC -1,FALSE
  184.  
  185.